const path = require('path')
function resolve (dir) {
  return path.join(__dirname, dir)
}
const CompressionPlugin = require('compression-webpack-plugin')// 引入gzip压缩插件

module.exports = {
  // 基本路径
  publicPath: '/',
  // 输出文件目录
  outputDir: process.env.VUE_APP_ORIGIN || 'dist',
  assetsDir: '', // 静态资源目录 (js, css, img, fonts)
  // eslint-loader 是否在保存的时候检查
  lintOnSave: false,
  css: {
    loaderOptions: {
      sass: {
        additionalData: '@import "@/styles/variables.scss";@import "@/styles/mixins.scss";'
      }
    }
  },
  chainWebpack: (config) => {
    config.plugins.delete('preload')
    config.plugins.delete('prefetch')
    // if (debug === 'production') {
    // 添加分析工具
    // config
    //   .plugin('webpack-bundle-analyzer')
    //   .use(require('webpack-bundle-analyzer').BundleAnalyzerPlugin)
    //   .end()
    // 压缩代码
    config.optimization.minimize(process.env.NODE_ENV === 'production')
    // config.optimization.minimize(true)
    // 分割代码
    config.optimization.splitChunks({
      chunks: 'all'
    })
    // 图片压缩
    // config.module.rule('images')
    //   .use('image-webpack-loader')
    //   .loader('image-webpack-loader')
    //   .options({ bypassOnDebug: true })
    //   .end()
    config.module
      .rule('svg')
      .exclude.add(resolve('src/icons'))
      .end()
    config.module
      .rule('icons')
      .test(/\.svg$/)
      .include.add(resolve('src/icons'))
      .end()
      .use('svg-sprite-loader')
      .loader('svg-sprite-loader')
      .options({
        symbolId: 'icon-[name]'
      })
      .end()
    // }
  },
  devServer: {
    open: false,
    host: '0.0.0.0',
    port: 80,
    // port: 5052,
    https: false,
    hotOnly: false,
    disableHostCheck: true
  },
  configureWebpack: {
    plugins: [
      new CompressionPlugin({
        algorithm: 'gzip',
        test: /\.js$|\.html$|\.css/, // 匹配文件名
        threshold: 10240, // 对超过10kb的数据进行压缩
        deleteOriginalAssets: false, // 是否删除原文件
        minRatio: 0.8
      })
    ]
  },

  productionSourceMap: false,
  pwa: {},
  // 第三方插件配置
  pluginOptions: {
    // ...
  }
}
